pxCreateCar%(VehDesc%)

Параметры

VehDesc% - машина

Описание

Создает машину.

Смотрите так же

Пример

;Пример использования функции
;pxCreateCar

;В данном примере нам понадобятся несколько однотипных тел
Type Px_Cube
    Field body%
    Field mesh%
End Type

Graphics3D 800,600,32,2
SetBuffer BackBuffer()
Global fntArial=LoadFont("Arial",16)

;Создаем свет
light=CreateLight(1)
PositionEntity light,0,50,20

;Создаем камеру
campiv=CreatePivot()
cam=CreateCamera()
PositionEntity cam,0,7,-15

;Общий план
plane=CreatePlane()
tile1=LoadTexture("media\cell.bmp")
ScaleTexture tile1,5,5
EntityTexture plane,tile1

;Создаем физический мир, устанавливаем гравитацию.
pxCreateWorld(1) ;У нас будет поверхность
pxSetGravity(0,-30,0)

;для проверки подвески нам понадобятся горы
level = LoadMesh("media\level.b3d")
PositionMesh level, 0,2,0
CreateTrimeshMesh(level)

tile2=LoadTexture("media\cell.bmp")
ScaleTexture tile2,0.02,0.02
EntityTexture level,tile2

;cube physic
xcubic=PxCreateCube(1,1,1,100)
pxSetPosition(xcubic,0,20,0)

;Создадим множество обектов помех
For i=0 To 250
    ocu.Px_Cube = New Px_Cube
    y# = Rnd (0.2,1)
    x# = Rnd (0.2,1)
    z# = Rnd (0.2,1)
    ocu\mesh=CreateCube ()
    ScaleMesh ocu\mesh,x,y,z
    EntityColor ocu\mesh,Rand(0,255),Rand(0,255),Rand(0,255)
    ocu\body=PxCreateCube(x,y,z, 10)
    pxSetPosition(ocu\body,Rand(-40,40),40,Rand(-40,40))
Next

;Создаём описание машины
car_desc = pxCarCreateDescriptor(0, 8, 0, 1200)
pxCarSetMotorParameter(car_desc, 3500, 30)
pxCarSetSteeringParameter(car_desc, 0.04, 30)
pxCarSteerPoint(car_desc, 1.8, 0, 0, -1.5, 0,0)

;Создаём колёса
front_koleso1 = pxCarAddDriveWheel(car_desc, 1.8, -0.4, 1.09, 0.4, 0.1)
front_koleso2 = pxCarAddDriveWheel(car_desc, 1.8, -0.4, -1.09, 0.4, 0.1)
back_koleso1 = pxCarAddWheel(car_desc, -1.5, -0.4, 1.09, 0.4, 0.1)
back_koleso2 = pxCarAddWheel(car_desc, -1.5, -0.4, -1.09, 0.4, 0.1)

pxCarSetWheelParameter(front_koleso1, 7000, 800, 0.2)
pxCarSetWheelParameter(front_koleso2, 7000, 800, 0.2)
pxCarSetWheelParameter(back_koleso1 , 7000, 800, 0.2)
pxCarSetWheelParameter(back_koleso2, 7000, 800, 0.2)

;Создаём геометрию машины
pxCarAddBoxShape(car_desc, 2.5,0.4, 1.2, 0, 0, 0)
pxCarAddBoxShape(car_desc, 1,0.3, 1.1, -0.3, 0.7, 0)
; HullCube = CreateCube()
; PositionEntity HullCube,0,5,0
; ScaleMesh HullCube,2.5, 0.4, 1.2
; AddHullToCar(car_desc, HullCube, 0,0,0)

;Создаём машину
car = pxCreateCar(car_desc)
car_body = pxCarGetBody(car)
pxSetCMassLocalPosition(car_body ,0, -0.5, 0)

;Создаём меш машимны
car_mesh = LoadMesh("media\Audi.3ds")
ScaleMesh car_mesh, 0.5,0.5,0.5
RotateMesh car_mesh, 0,-90,0
PositionMesh car_mesh,0,-0.9,0

Repeat

    PointEntity cam,car_mesh

; pxSetEntity(cubic,xcubic)
    pxSetEntity(car_mesh, car_body)

;car control
    speed =0
    If KeyDown(200) speed=1
    If KeyDown(208) speed=-1

    angle=0
    If KeyDown(203) angle=3
    If KeyDown(205) angle=-3

    brake=0
    If KeyDown(57) brake = 1

;physic
    RenderPhysic(60,0)


    For ocu.Px_Cube = Each Px_Cube
pxSetEntity(ocu\mesh, ocu\body)
    Next

    pxCarControl(car, speed, angle, brake)

    UpdateWorld()
    RenderWorld()

    Text 5,25,"Управление - клавишы курсора и пробел"

    Flip
Until KeyHit(1)
End

Function CreateTrimeshMesh(mesh%)

    nsurf = CountSurfaces(mesh)
    nvert = 0
    nface=0
    For ns = 1 To nsurf
        Local surf = GetSurface(mesh,ns)
        nface = nface+CountTriangles(surf)
        nvert = nvert +CountVertices(surf)
    Next

    fbank = CreateBank(nface*4*3)
    nf = 0
    vbank = CreateBank(nvert*4*3)
    nv = 0
    For ns = 1 To nsurf
        surf = GetSurface(mesh,ns)
        nfv = CountTriangles(surf)
        For nfc = 0 To nfv -1
            PokeInt fbank,nf*12+0,TriangleVertex(surf,nfc,0)
            PokeInt fbank,nf*12+4,TriangleVertex(surf,nfc,1)
            PokeInt fbank,nf*12+8,TriangleVertex(surf,nfc,2)
            nf=nf+1
        Next

        nvv = CountVertices(surf)
        For nvc = 0 To nvv - 1
            PokeFloat vbank,nv*12+0,VertexX(surf,nvc)
            PokeFloat vbank,nv*12+4,VertexY(surf,nvc)
            PokeFloat vbank,nv*12+8,VertexZ(surf,nvc)
            nv = nv+1
        Next
    Next
    bbb%=pxCreateStaticTriMesh(vbank, fbank, nvert, nface)
    FreeBank vbank
    FreeBank fbank
    Return bbb%
End Function

Function AddHullToCar%(VehDesc, mesh%, pos_x#, pos_y#, pos_z#)

    Local nsurf = CountSurfaces(mesh)
    Local nvert = 0
    For ns = 1 To nsurf
        Local surf = GetSurface(mesh,ns)
        nvert = nvert + CountVertices(surf)
    Next
    vbSurface(mesh,ns)
        nvert = nvert + CountVertices(surf)
    Next
    vbSurface(mesh,ns)
        nvert v= 0
    For ns = 1 To nsurf
        Local surf = GetSurface(mesh,ns)
        nvert = nvert + CountVertices(surf)
    Next
sp;     PokeFloat vbank,nv*12+4,Vertex;     nvert = nvert + CountVertices(surf)
    Next
    vbSurface(mesh,ns)
        nvert v= 0
    For ns = 1 To nsurf
p; Next
    Next
    pxCarAddHullShape(VehDesc, vbank, nvert, pos_x, pos_y, pos_z)
    FreeBank vbank

End Function

К содержанию

Нажмите здесь чтобы увидеть последнюю версию этой странички в режиме online.